﻿#define _CRT_SECURE_NO_WANINGS 1
#pragma warning(disable: 4996)
#include<stdio.h>
#include<assert.h>
//size_t my_strlen(const char* arr)
//{
//	assert(arr != NULL);
//	size_t count = 0;
//	while (*arr != '\0')
//	{
//		count++;
//		arr++;
//	}
//	return count;
//}verse 2
//size_t my_strlen(const char* arr)
//{
//	assert(arr != NULL);
//	const char* brr = arr;
//	while (*brr != '\0')
//	{
//		brr++;
//	}
//	return brr - arr;
//}verse 3;模拟实现strcpy
//void my_strcpy(char* des, const char* sce)
//{
// assert(des);
// assert(sce);
//	while (*des++ = *sce++)
//	{
//		;
//	}
//}strcat函数模拟;
//void my_strcat(char* dest, const char* sce)
//{
//	assert(dest);
//	assert(sce);
//	while (*dest != '\0')
//	{
//		dest++;
//	}
//	while (*dest++ = *sce++)
//	{
//		;
//	}
//
//}
//int main()
//{
//
//	char arr[30] = { 0 };
//	gets_s(arr);
//	char brr[30] = "i love ";
//	my_strcat(brr,arr);
//	printf("%s", brr);
//	return 0;
//}先输⼊10个整数存放在数组中，再输⼊⼀个整数n，删除数组中所有等于n的数字，数组中剩余的数组保证数组的最前⾯，打印剩余的数字。注：m的
//void delenum(int* arr, int sz, int num)
//{
//	int j = 0;
//	for (int i = 0; i < sz; i++)
//	{
//		if (arr[i] != num)
//		{
//			arr[j] = arr[i];
//			j++;
//		}
//	}
//	for (int i = 0; i < j; i++)
//	{
//		printf("%d ", arr[i]);
//	}
////}题⽬描述：
//输⼊两个升序排列的序列，将两个序列合并为⼀个有序序列并输出。
//输⼊包含三⾏，第⼀⾏包含两个正整数n, m，⽤空格分隔。n表⽰第⼆⾏第⼀个升序序列中数字的个
//数，m表⽰第三⾏第⼆个升序序列中数字的个数。其中
//1 <= n <= 30, 1 <= m <= 30 第⼆⾏包含 n 个整数，⽤空格分隔。
//第三⾏包含 m 个整数，⽤空格分隔。
//输出为⼀⾏，输出⻓度为n + m的升序序列，即⻓度为n的升序序列和⻓度为m的升序序列中的元素重
//新进⾏升序序列排列合并。
void combin(int* arr1, int* arr2,int* arr3,int n,int m)
{
	int i = 0,j = 0,k = 0;
	while (i < n && j < m)
	{
		if (arr1[i] < arr2[j])
		{
			arr1[i] = arr3[k];
			i++;
			k++;
		}
		else
		{
			arr2[j] = arr3[k];
			j++;
			k++;
		}
	}
	if (i < n)
	{
		arr1[i] = arr3[k];
		i++;
		k++;
	}
	if (j < m)
	{
		arr2[j] = arr3[k];
		j++;
		k++;
	}
	for (int n = 0; n < k; n++)
	{
		printf("%d ", arr3[n]);
	}
}
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d%d", &n, &m);
	int arr1[30] = { 0 };
	int arr2[30] = { 0 };
	int arr3[30] = { 0 };
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &arr1[i]);
	}
	for (int i = 0; i < m; i++)
	{
		scanf("%d", &arr2[i]);
	}
	combin(arr1, arr2,arr3,n,m);
	return 0;
}
